﻿//using UnityEngine;

//public class Tetromino : MonoBehaviour {

//    [SerializeField] bool limitAngle = false;
//    [SerializeField] bool freezeRotation = false;

//    Vector3 rightVec = new Vector3(1f, 0f, 0f);
//    Vector3 downVec = new Vector3(0f, 1f, 0f);
//    Vector3 rotAnagle = new Vector3(0f, 0f, 90f);

//    float timeElapse = 0f;
//    [SerializeField] float timeSpeed = 1f;

//    float scoreTimeElapse = 0f;
//    [SerializeField] int timeScore = 40;
//    [SerializeField] int scoreDecreasePerSec = 10;

//    private void Update() {
//        UpdatePos();
//    }

//    private void OnEnable() {
//        InputManager.Instance.CurTetromino = this;
//    }
//    private void OnDisable() {
//        if (null != InputManager.Instance 
//            && InputManager.Instance.CurTetromino == this) { 
//            InputManager.Instance.CurTetromino = null;
//        }
//    }

//    private void FixedUpdate() {
//        scoreTimeElapse += Time.deltaTime;
//        if (scoreTimeElapse >= 1f && timeScore > 0) {
//            scoreTimeElapse -= 1f;
//            timeScore -= scoreDecreasePerSec;
//            timeScore = Mathf.Max(timeScore, 0);
//        }
//    }

//    public void Rotation() {
//        if (!freezeRotation) {
//            if (limitAngle) {
//                transform.Rotate(transform.eulerAngles.z == 0 ? rotAnagle : -rotAnagle);
//                if (!Game.Instance.CheckMovingValid(this)) {
//                    transform.Rotate(transform.eulerAngles.z == 0 ? rotAnagle : -rotAnagle);
//                }
//            } else {
//                transform.Rotate(rotAnagle);
//                if (!Game.Instance.CheckMovingValid(this)) {
//                    transform.Rotate(-rotAnagle);
//                }
//            }
//        }
//    }
//    public void MoveToLeft() {
//        transform.position -= rightVec;
//        if (!Game.Instance.CheckMovingValid(this)) {
//            transform.position += rightVec;
//        }
//    }
//    public void MoveToRight() {
//        transform.position += rightVec;
//        if (!Game.Instance.CheckMovingValid(this)) {
//            transform.position -= rightVec;
//        }
//    }
//    public void DownFaster() {
//        timeElapse = 0f;
//        transform.position -= downVec;
//        if (!Game.Instance.CheckMovingValid(this)) {
//            // transform.position += downVec;
//            // Game.Instance.UpdateGrid(this);
//            // enabled = false;
//            // Game.Instance.CheckAndDestroyMinos();
//            // Game.Instance.NextTetromino();

//            transform.position += downVec;
//            Game.Instance.UpdateGrid(this);
//            enabled = false;
//            Game.Instance.CheckAndDestroyMinos(timeScore);
//            // 消行后检测 grid 在 MAX_HEIGHT 之上是否还有方块
//            // 如果没有方块了，就调用 NextTetromino
//            // 否则，就 GameOver
//            if (Game.Instance.CheckIsGameOver()) {
//                Game.Instance.GameOver();
//            } else {
//                Game.Instance.NextTetromino();
//            }
//        }
//    }
//    public void DownImmediately() {
//        do {
//            transform.position -= downVec;
//        } while (Game.Instance.CheckMovingValid(this));
//        transform.position += downVec;
//        timeElapse = 0.8f;
//    }

//    void UpdatePos() {
//        timeElapse += Time.deltaTime * timeSpeed;

//        if (timeElapse >= 1f) {
//            DownFaster();
//        }
//    }
//}
